#ifndef TRACKER_H
#define TRACKER_H

/* 
    Tracker.h
	Author: Gabriel Baud-Bovy
	Author: Mike Ciaraldi

    Contains the Tracker class, which is the parent of PolhemusTracker
    and the various tracker simulators.

*/

class Tracker {
//private: 
public: 
	// methods (Some of these will be removed in refactoring.)
	virtual int open()=0;
	virtual int close()=0;

	// Polling
	virtual int poll(float *v)=0;

	// Continuous Acquisition:
	// Read frames coming from the tracker and store them in an internal
	// circular buffer. This function needs to be called regularly to 
	// avoid overwrite in the buffer which can be very limited in size. 
	virtual int start(void)=0;
	virtual int sync(void)=0; 
	virtual int stop(void)=0;	
	virtual int read(void)=0;

	// update internal pointer to the next unread pointer
	// return false if there are no available frame.
	virtual int  nextFrame(void)=0;
	// get position and orientation 
	virtual int getData(int sensor, int channel, float &value)=0;
//	virtual int GetLatestData(int sensor, int channel, float &value)=0;

	// get String on error message
	virtual char *getErrorInfo(void)=0;
};

#endif /* TRACKER_H */
